package modelo;
import java.util.Vector;

public abstract class Cuenta {
        private static int proximoNumeroCuenta;
        protected Cliente cliente;
        protected int numeroCuenta;
        protected Vector<Movimientos> movimientos;
        protected float saldo;
        
        public Cuenta(Cliente cli){
                super();
                this.cliente=cli;
                this.numeroCuenta = ++proximoNumeroCuenta;
                this.saldo=0;
                this.movimientos = new Vector<Movimientos>();
        }

        public static int getProximoNumeroCuenta() {
                return proximoNumeroCuenta;
        }

        public static void setProximoNumeroCuenta(int proximoNumeroCuenta) {
                Cuenta.proximoNumeroCuenta = proximoNumeroCuenta;
        }

        public int getNumeroCuenta() {
                return numeroCuenta;
        }

        public void setNumeroCuenta(int numeroCuenta) {
                this.numeroCuenta = numeroCuenta;
        }

        public Vector<Movimientos> getMovimientos() {
                return movimientos;
        }

        public void setMovimientos(Vector<Movimientos> movimientos) {
                this.movimientos = movimientos;
        }

        public float getSaldo() {
                return saldo;
        }

        public void setSaldo(float saldo) {
                this.saldo = saldo;
        }

        public void depositar(float monto) {
            this.saldo=this.saldo+monto;
        }

        public abstract boolean extraer(float monto);

        public void crearMovimiento(float monto, String desc) {  
        	Movimientos m = new Movimientos(desc,monto);
        	this.movimientos.addElement(m);
        }

		public boolean sosCuenta(int dni) {
			return this.cliente.crearClienteDTO().getDni()==dni;	
		}

		public abstract CuentaDTO crearCuentaDTO();

		public boolean sosCuentaID(int nroCta) {
			return this.getNumeroCuenta()==nroCta;
		}

		public Vector<MovimientosDTO> getMovimientosDTO() {
			Vector<MovimientosDTO> vDTO = new Vector<MovimientosDTO>();
			for(int i=0;i<movimientos.size();i++){
				vDTO.add(movimientos.elementAt(i).crearMovimientoDTO());
			}
			return vDTO;
		}
                
}
